package cn.wwcyc.mapper;

import cn.wwcyc.domain.User;
import cn.wwcyc.domain.UserRoleMenuVo;
import cn.wwcyc.domain.UserVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
* @author Administrator
* @description 针对表【user】的数据库操作Mapper
* @createDate 2023-07-01 12:08:41
* @Entity cn.wwcyc.domain.User
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {

    //这个函数淘汰,因为需要的是按用户进行分页，这个查询出来后，必须按照用户进行分组然后在分页，
    // 所以这个连接分页无意义，而且应该用左连接
    List<UserRoleMenuVo> getUserRoleMenuVoPage(long start, long end);

    //这个函数的sql不能进行分页,如果这个函数分页，则不符合业务需求，因为这个查询结果没有按照用户分组，所以分页无意义
    /*
    * 他的查询结果如下：
    * 1.用户1，角色1， 菜单1，
    * 2.用户1，角色1，菜单2，
    * 3.用户1，角色2，菜单1，
    * 3.用户2，角色3，菜单1，
    * 5.用户2，角色2，菜单1，
    * 可见，这样的结果分页是无意义的，必须在java list中用程序分页
    * 在java list中变为按照用户实体进行组织的list：
    * 1.用户1，（角色1，角色2），（菜单1，菜单2），
    * 2.用户2，（角色2，角色3），（菜单1），
    * 然后在java 程序中对这个list行分页即可
    * */
    // 因为需要的是按用户进行分页，这个查询出来后，会自动按照用户进行分组组装进javabean里，然后使用java程序对list进行分页。
    List<UserRoleMenuVo> getUserRoleMenuVo(String username, List<Long> dwIdList);


    Integer setUserRoleidNull(Long id);

    //单表的update，basemapper提供的对于roleid为空值无法插入，会报错，所以自己写一个。
    Integer myUpdateById(User user);

    void updateByIdWithoutPassword(UserVo user);

    void updatePassword(Long userId, String oldpassword, String newpassword);
}




